﻿/*
 * Created by SharpDevelop.
 * User: edu
 * Date: 02/11/2011
 * Time: 02:40 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;

using Business_Entity;
using Business_Logic;

namespace PetSoft.GUI.Compras
{
	/// <summary>
	/// Description of GUIBuscarProductosCompras.
	/// </summary>
	public partial class GUIBuscarProductosCompras : Form
	{
		private int idProveedor;
        private List<BEProductoProveedorCompras> productosxproveedor;
        private List<BEProducto> productos;
        private BEProducto productoSeleccionado;
        private int resultado;
        private float precioSeleccionado;

		public GUIBuscarProductosCompras(int idProveedor)
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			try{
	            this.idProveedor = idProveedor;
	            InitializeComponent();
	            cargarKeys();
				habilitarTipo();
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
		}

        
      
        
        void CancelarBTNClick(object sender, EventArgs e)
        {	try{
        	 	this.Close();
        	 }catch(Exception ex){
				Utils.MessageError("",ex);
			}
        }

        private void BuscarBTN_Click(object sender, EventArgs e)
        {
        	try{
	        	String Bcodigo=this.CodigoTB.Text.ToString();
	        	String Bnombre=this.NombreTB.Text.ToString();
	        	String Btipo = "";
	        	if (TipoProductoCB.SelectedItem.ToString()=="Todos")
	        	     Btipo = "";
	        	else Btipo = this.TipoProductoCB.SelectedItem.ToString(); 
	        	
	        	//MessageBox.Show("tipo "+this.TipoProductoCB.SelectedItem.ToString());
	        	
	        	cargarGrillaProductos(Bcodigo,Bnombre,Btipo);
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
        }

        public void cargarGrillaProductos(String Bcodigo,String Bnombre,String Btipo) 
        {
        	try{
			          
	        	GrillaProductosDGV.Rows.Clear();
	
	            Business_Logic.BLProveedor BLtemporal = new BLProveedor();
	            //productosxproveedor = BLtemporal.BuscarProductosxProveedor(this.idProveedor,false);
	            productos=BLtemporal.BuscaProductos(Bcodigo,Bnombre,Btipo);
	          /*  if (productos.Count == 0)
	            {
	                MessageBox.Show("No hay filas en la busqueda hecha", "Mensaje");
	                return;
	            }*/
	            bool encontro;
	            CantidadLB.Text = productos.Count.ToString();
	            foreach (BEProducto product in productos)
	                {  
	              //encontro= false;
	              //foreach (BEProductoProveedorCompras prodprov in productosxproveedor)
	              // { if (product.Codigo == prodprov.CodigoProducto)
	                     //{encontro = true;
	                      GrillaProductosDGV.Rows.Add();
	                      DataGridViewRow row = GrillaProductosDGV.Rows[GrillaProductosDGV.Rows.Count - 1];
                          
                          row.Cells[0].Value = false;
	                      row.Cells["codigo"].Value = product.Codigo;
	                      row.Cells["nombre"].Value = product.Nombre;
	                      row.Cells["tipo"].Value = product.TipoProducto.Descripcion;
	                      row.Cells["descripcion"].Value = product.Descripcion;
	                      //row.Cells["precio"].Value = prodprov.Precio;
	                     //}
	                }
	
	            if (GrillaProductosDGV.Rows.Count > 0)
	            {
	                GrillaProductosDGV.Rows[0].Selected = true;
	            }
	             
	          }catch(Exception ex){
					Utils.MessageError("",ex);
			  }
      }

        
        public void habilitarTipo()
        {
        	try{
        	this.TipoProductoCB.Items.Clear();

            BLProveedor bl = new BLProveedor();
			this.TipoProductoCB.Items.Add("Todos");
			this.TipoProductoCB.SelectedIndex = 0;
                List<BETipoProducto> lista = bl.obtenerTiposProductosCompras();

                if (lista != null)
                {	
                    for (int i = 0; i < lista.Count; i++)
                        this.TipoProductoCB.Items.Add(lista[i].Descripcion);
                }
                else
                { Utils.MessageAviso("Error al cargar la base de datos");
                  //MessageBox.Show("Error cargando datos de la BD","Error");
                }
            
            }catch(Exception ex){
				Utils.MessageError("",ex);
			}
        }


        private bool validaPrecio(String precio) {

            try
            {
                //MessageBox.Show(precio);
                precio =precio.Replace(",",".");
                //MessageBox.Show(precio);
                var precioFloat = (float)Convert.ToDouble(precio);
                if (precioFloat > 0)
                {
                    precioSeleccionado = precioFloat;
                    return false;
                }
                else return true;

            }
            catch {
                return true;
             }
        
        
        }
        private void AceptarBTN_Click(object sender, EventArgs e)
        {
        	try{
	            int cont2 = 0;
	            int aux = 0;
	            int pos = 0;
	
	            foreach (DataGridViewRow fila in GrillaProductosDGV.Rows)
	            {
	                if (fila.Cells[0].Value != null && (bool)fila.Cells[0].Value)
	                {
	                    cont2++;
	                    pos = aux;
	                }
	                aux++;
	            }
	
	            if (cont2 == 0)
	            {	Utils.MessageAviso("Seleccione un Producto");
	                
	            }
	            else if (cont2 == 1)
	            {
	                DataGridViewRow fila = GrillaProductosDGV.Rows[pos];
	                if (fila.Cells[0].Value != null && (bool)fila.Cells[0].Value)
	                {
	
	
	                    int i = pos;
	                    int nuevoProductoPxP = int.Parse(GrillaProductosDGV[1, i].Value.ToString());
	                    int nuevoProveedorPxP = this.idProveedor;
	                    BLProveedor bltemporal = new BLProveedor();
	                    bool NoValido = validaPrecio(PrecioTB.Text);
	
	                    
	                    if (NoValido)
	                    {
	                    	Utils.MessageAviso("El precio a Modificar es Incorrecto");
	                        
	                    }
	                    else
	                    {
	
	                    	if (Utils.MessagePregunta("¿Está seguro de agregar el Producto?"))
	                        {
	                            BEProductoProveedorCompras nuevoPxP = new BEProductoProveedorCompras(nuevoProductoPxP, nuevoProveedorPxP, precioSeleccionado);
	                            resultado = bltemporal.addProvProductoFiorella(nuevoPxP);
	
	                            if (resultado == 1)
	                            {  Utils.MessageInformation("Nuevo producto agregado");
	                            	this.Close(); }
	                            else if (resultado == 2)
	                                Utils.MessageAviso("El producto ya esta en la lista");
	                            else
	                                Utils.MessageError("Error al agregar producto");
	
	                        }
	                        //guardar valor const nuevo precio               
	
	                    }
	
	                }
	
	
	
	            }
	            else if (cont2 > 1)
	            {	Utils.MessageAviso("Seleccione sólo un Producto");
	            }
            
            }catch(Exception ex){
				Utils.MessageError("",ex);
			}
        }



  


        private void codigoTBPress(object sender, KeyPressEventArgs e)
        {	try{
             	this.validaNum(sender, e);
            }catch(Exception ex){
				Utils.MessageError("",ex);
			}
        }

        private void validaNum(object sender, KeyPressEventArgs e)
        {
        	try{
	        	if (Char.IsDigit(e.KeyChar))
	            {
	                e.Handled = false;
	            }
	            else if (Char.IsControl(e.KeyChar))
	            {
	                e.Handled = false;
	            }
	            else if (Char.IsSeparator(e.KeyChar))
	            {
	                e.Handled = false;
	            }
	            else
	            {
	                e.Handled = true;
	            }
            }catch(Exception ex){
				Utils.MessageError("",ex);
			}
        }
		
        private void cargarKeys(){
          
           try{
	      		//this.CodigoTB.KeyPress+=new KeyPressEventHandler(Utils.SoloNumerosTB);
				//this.codigoTB.ShortcutsEnabled=false;
				this.CodigoTB.KeyPress+=new KeyPressEventHandler(Utils.SoloNumerosTB);
				this.CodigoTB.ShortcutsEnabled=false;
				this.NombreTB.KeyPress+=new KeyPressEventHandler(Utils.SoloLetrasTB);
				this.NombreTB.ShortcutsEnabled=false;
				this.PrecioTB.KeyPress+=new KeyPressEventHandler(Utils.DecimalesPuntoTB);
				this.PrecioTB.ShortcutsEnabled=false;        
        	}catch(Exception ex){
				Utils.MessageError("",ex);
			}
        }
        
        private void button1_Click(object sender, EventArgs e)
        {
        	try{
        	
	        	GrillaProductosDGV.Rows.Clear();
	            this.CodigoTB.Text ="";
	            this.NombreTB.Text = "";
	            this.TipoProductoCB.SelectedIndex=0;
	            
            }catch(Exception ex){
				Utils.MessageError("",ex);
			}
            
        }


        void GrillaProductosDGV_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            try
            {
                int fila = GrillaProductosDGV.CurrentRow.Index;
                if ((bool)GrillaProductosDGV[0, fila].Value)
                {
                    GrillaProductosDGV[0, fila].Value = false;
                }
                else
                {
                    GrillaProductosDGV[0, fila].Value = true;
                }

            }
            catch (Exception ex)
            {
                Utils.MessageError("", ex);
            }
        }
        

	}
}
